package com.bjsxt.controller;

import com.bjsxt.commons.exception.DaoException;
import com.bjsxt.commons.pojo.BaizhanResult;
import com.bjsxt.pojo.TbItem;
import com.bjsxt.pojo.TbItemDesc;
import com.bjsxt.pojo.TbItemParamItem;
import com.bjsxt.service.ItemService;
import jdk.nashorn.internal.ir.ReturnNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author coder_z
 * @date 2023/2/8
 **/
@RestController
@RequestMapping("/backend/item")
public class ItemController {
    @Autowired
    private ItemService itemService;

    /**
     * 显示商品分页信息
     * @param page 页码
     * @param rows 条数
     * @return
     */
    @GetMapping("/selectTbItemAllByPage")
    public BaizhanResult showPage(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer rows){
        return  itemService.showPage(page,rows);
    }

    /**
     * 商品新增
     * @param item 商品表数据
     * @param desc 商品描述表信息
     * @param itemParamItem 商品规格表参数信息
     * @return
     */
    @PostMapping ("/insertTbItem")
    public BaizhanResult insert(TbItem item, TbItemDesc desc, TbItemParamItem itemParamItem){
        try {
            return itemService.insert(item,desc,itemParamItem);
        } catch (DaoException e) {
            e.printStackTrace();
            return BaizhanResult.error(e.getMessage());
        }

    }
    /**
     * 删除
     * @param item
     * @return
     */
    @PostMapping("/deleteItemById")
    public BaizhanResult deleteItemById(TbItem item){
        try {
            item.setStatus(3);
            return itemService.updateById(item);
        } catch (Exception e) {
            e.printStackTrace();
            return BaizhanResult.error(e.getMessage());
        }
    }
    /**
     * 上架商品
     * @param item
     * @return
     */
    @PostMapping("/onshelfItemById")
    public BaizhanResult onshelf(TbItem item){
        try {
            item.setStatus(1);
            return itemService.updateById(item);
        } catch (Exception e) {
            e.printStackTrace();
            return BaizhanResult.error(e.getMessage());
        }
    }
    /**
     * 下架商品
     * @param item
     * @return
     */
    @PostMapping("/offshelfItemById")
    public BaizhanResult offshelf(TbItem item){
        try {
            item.setStatus(2);
            return itemService.updateById(item);
        } catch (Exception e) {
            e.printStackTrace();
            return BaizhanResult.error(e.getMessage());
        }
    }

    /**
     * 回显商品信息
     * @param id
     * @return
     */
    @PostMapping("/preUpdateItem")
    public BaizhanResult preUpdate(long id){
        return itemService.selectAllById(id);
    }

    /**
     * 根据商品信息 修改商品表 商品描述表 商品规格参数表信息
     * @param item
     * @param desc
     * @param paramItem
     * @return
     */
    @PostMapping("/updateTbItem")
    public BaizhanResult update(TbItem item,TbItemDesc desc,TbItemParamItem paramItem){
        try {
            return itemService.updateAllById(item, desc, paramItem);
        } catch (Exception e) {
            e.printStackTrace();
            return BaizhanResult.error(e.getMessage());
        }
    }

}
